iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
Software Development

ROS進階學習筆記系列 第 2

Day 02 - ROS / ROS2.0 都幾?

  • 分享至 

  • xImage
  •  

筆者開始寫系列文的時候,也有被問過知不知道ROS2.0啊? 有沒有考慮換成ROS2.0啊? 等等的問題,因此誕生了這篇簡要的說明XD

有在關注ROS應該都知道,ROS近年出現二代革新版: ROS2.0,但是ROS2.0跟原本的ROS不太相容,所以一開始在開發的時候就需要先訂好版本要用哪個喔!

ROS2.0

ROS2.0出現的目的,當然就是要解決現行的ROS問題,因此在設計時大刀闊斧,改變了許多原有的架構,但也因為這樣造成許多開源的專案無法在ROS2.0上實行,需要透過ROS Bridge才能串接。所以如果想要用的一些package沒有支援ROS2.0的話,建議需要評估一下兩代之間的取捨。

ROS 和 ROS2.0的差異

因為筆者我本身使用的是ROS,對於ROS2.0僅有官網和一些文章上的認識,所以列一些比較重要的改革如下:

項目 ROS ROS2.0
系統平台 僅支援Ubuntu,其他系統為社群自行開發 支援Ubuntu Xenial, OS X El Capitan以及Windows 10
C++ 使用C++03 主要使用C++11,並計畫納入C++14和17
Python 使用python2 支援python3.5以上版本
應用層 使用master管理各個node 使用P2P 讓各個node各自執行
中介層 自定義格式(protocol等) 使用DDS 標準
統一的時程(duration)及時間(time)類型 用戶端自訂義,C++(sec, nsec)和Python(secs, nsecs)中的名稱也不一致 定義成message的一種,所以可以跨語言處理
node的生命週期 每個node都有自己的main function 可利用像是roslaunch類的工具進行系統化管理多個node的週期
執行緒 一開始要先選擇使用單執行緒或多執行緒 可任意切換使用
多重node 一個process只能用一個node 支援一個process可以使用多個node
roslaunch工具 roslaunch檔使用XML檔定義, 會因此而受限 roslaunch用Python寫, 因此可以使用較複雜的邏輯運算功能,例如if判斷條件

若是需要更詳盡的差異,還請參考下方reference處囉!

筆者我因為一開始學ROS時就是用一代,之後工作也用一代,在公司內部若要革新換成ROS2.0會有太高的陣痛期,因此目前也是不考慮轉換成ROS2.0的~~所以後續的文章都是以ROS一代的架構為基礎寫出來的呦!

Reference

https://design.ros2.org/articles/why_ros2.html
http://design.ros2.org/articles/changes.html
https://hackmd.io/@zSxsWbvXSued884MJiNZAQ/rkOlIHnUf?type=view
https://blog.generationrobots.com/en/ros-vs-ros2/
TROS: Protecting Humanoids ROS from Privileged Attackers, Giovanni Mazzeo and Mariacarla Staffa , International Journal of Social Robotics, August 2019
https://github.com/ros2/ros1_bridge


上一篇
Day 01 - 簡介與回顧
下一篇
Day 03 - Callback Function的好朋友 Spin & SpinOnce
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言